/********************************************************
*Implementacion de Variable                             *
*Author     :   Simon Emmanuel Gutierrez Brida          *
*Version    :   0.2                                     *
*Fecha      :   Septiembre/2011                         *
*------------------------------------------------------ *
*********************************************************/


#include <stdlib.h>
#include <stdio.h>
#include "variable.h"
#include <string.h>

Variable* nuevaVariable_id(char *id, bool autoOffset) {
    /**
     *Para la auto generacion de offset se utiliza una variable estatica local
     */
    static int offset = -12;
    Variable *nueva = (Variable*) malloc(sizeof(Variable));
    nueva->id = malloc(strlen(id) + 1);
    strcpy(nueva->id, id);
    if (autoOffset) {
        nueva->offset = offset;
        offset += -4;   
    }
    return nueva;
}


Variable* nuevaVariable_id_tipo(char *id, int tipo, bool autoOffset) {
    Variable *nueva = nuevaVariable_id(id,autoOffset);
    nueva->tipo = tipo;
    return nueva;
}


Variable* nuevaVariable_id_tipo_offset(char *id, int tipo, int offset) {
    Variable *nueva = nuevaVariable_id_tipo(id, tipo,false);
    nueva->offset = offset;
    return nueva;
}

char* obtenerIdentificador(Variable *var) {
    return var->id;
}

int obtenerTipo(Variable *var) {
    return var->tipo;
}

int obtenerOffset(Variable *var) {
    return var->offset;
}

void definirIdentificador(Variable *var, char *id) {
    var->id = id;
}

void definirTipo(Variable *var, int tipo) {
    var->tipo = tipo;
}

void definirOffset(Variable *var, int offset) {
    var->offset = offset;
}